package com.example.Demo_DelayQueue;

import java.util.concurrent.DelayQueue;
import java.util.concurrent.TimeUnit;

public class Test {
    public static void main(String[] args) throws InterruptedException {
        //创建一个延时队列
        DelayQueue<DelayTask> queue = new DelayQueue<>();
        //向延时队列中填充内容物
        queue.add(new DelayTask("1", 1L, TimeUnit.SECONDS));
        queue.add(new DelayTask("2", 2L, TimeUnit.SECONDS));
        queue.add(new DelayTask("3", 3L, TimeUnit.SECONDS));

        System.out.println(queue);
        System.out.println("queue put done");
        DelayTask object;
        //遍历延时队列
        //关于延时队列进行遍历取出时,一个需要注意非常重要的点
        //那就是使用queue.take()方法时,如果取不到队列内容物,线程并不会结束,而是被挂起
        //这是队列的特征,也刚好是它被需要的特点
      while((object=queue.take())!=null) {
            try {
                System.out.println("something");
                object.sayHello();
                object.sayHello();
                System.out.println(object.name + ":" + System.currentTimeMillis());

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}
